Tópico movido para dúvidas / pedidos resolvidos.
info
Group: Conde
Joined: 07/04/15
Posts: 926
Reputation: +335
Gender: Masculino

info
Group: Conde
Joined: 07/04/15
Posts: 926
Reputation: +335
Gender: Masculino

Por distração, eu acabei me esquecendo que vc queria 3 talkactions. Por isso, aqui está o script final com as 3 talkactions:
*lembrando que ñ tenho como testar, e estou me baseando no q me foi dito sobre o tfs 1.2:
local pointObj = 2160 --id do item "points"
function getAccountPoints(player)
local res = db.getResult('SELECT `premium_points` FROM `accounts` WHERE id='..player:getGuid()..'')
if(res:getID() == -1) then
return false
end
local ret = res:getDataInt("premium_points")
res:free()
return tonumber(ret)
end
function onSay(player, words, param)
if (words == '!sacar') then
if param ~= "" then
if tonumber(param) ~= nil then
if 0 >= tonumber(param) then
player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "O valor precisa ser acima de zero.")
elseif tonumber(param) <= player:getAccountPoints() then
player:addItem(pointObj, param)
db.executeQuery('UPDATE `accounts` SET `premium_points`='..player:getAccountPoints() - param..' WHERE id='.. player:getGuid()..'')
newPoints = player:getAccountPoints()
player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, 'Você ainda possui '..newPoints..' premium points em sua conta.')
else
player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "Você não tem tantos premium points assim.")
end
else
player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "O valor precisa ser um numero.")
end
else
player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "Você precisa especificar um valor.")
end
elseif (words == '!saldo') then
player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, 'Seu saldo no shopping atual é de '..player:getAccountPoints()..' Premium points.')
elseif (words == '!depositar') then
if param ~= "" then
if tonumber(param) ~= nil then
if 0 >= tonumber(param) then
player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "O valor precisa ser acima de zero.")
elseif tonumber(param) <= player:getItemCount(pointObj) then
player:removeItem(pointObj, tonumber(param))
db.executeQuery('UPDATE `accounts` SET `premium_points`='..player:getAccountPoints() + tonumber(param)..' WHERE id='.. player:getGuid()..'')
newPoints = player:getAccountPoints()
player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, 'Você acabou de depositar '..param..' premium points no shopping. Seu saldo agora é de '..newPoints..' premium points.')
else
player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "Você não tem tantos premium points assim.")
end
else
player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "O valor precisa ser um numero.")
end
else
player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "Você precisa especificar um valor.")
end
end
return true
end
Basta usar uma só tag em talkactions.xml apenas se atente a isso na tag:
words="!sacar;!saldo;!depositar"
Edited Janeiro 30 by Danihcv
bugs corrigidos
info
Group: Visconde
Joined: 28/06/11
Posts: 356
Reputation: +26
Tibia Character: Akor Rysea

Por distração, eu acabei me esquecendo que vc queria 3 talkactions. Por isso, aqui está o script final com as 3 talkactions:
*lembrando que ñ tenho como testar, e estou me baseando no q me foi dito sobre o tfs 1.2:
local pointObj = 2160 --id do item "points" function getAccountPoints(player) local res = db.getResult('SELECT `premium_points` FROM `accounts` WHERE id='..player:getGuid()..'') if(res:getID() == -1) then return false end local ret = res:getDataInt("premium_points") res:free() return tonumber(ret) end function onSay(player, words, param) if (words == '!sacar') then if param ~= "" then if tonumber(param) <= player:getAccountPoints() then player:addItem(pointObj, param) db.executeQuery('UPDATE `accounts` SET `premium_points`='..player:getAccountPoints() - param..' WHERE id='.. player:getGuid()..'') newPoints = player:getAccountPoints() player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, 'Você ainda possui '..newPoints..' premium points em sua conta.') else player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "Você não tem tantos premium points assim.") end else player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "Você precisa especificar um valor.") end elseif (words == '!saldo') then player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, 'Seu saldo no shopping atual é de '..player:getAccountPoints()..' Premium points.') elseif (words == '!depositar') then if param ~= "" then if tonumber(param) <= player:getItemCount(pointObj) then player:removeItem(pointObj, tonumber(param)) db.executeQuery('UPDATE `accounts` SET `premium_points`='..player:getAccountPoints() + tonumber(param)..' WHERE id='.. player:getGuid()..'') newPoints = player:getAccountPoints() player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, 'Você acabou de depositar '..param..' premium points no shopping. Seu saldo agora é de '..newPoints..' premium points.') else player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "Você não tem tantos premium points assim.") end else player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "Você precisa especificar um valor.") end end return true endBasta usar uma só tag em talkactions.xml apenas se atente a isso na tag:
Eu fiz Dani, por isso que não pedi as outras... obrigado irmão te amo de novo hahaha <3
info
Group: Conde
Joined: 07/04/15
Posts: 926
Reputation: +335
Gender: Masculino

info
Group: Visconde
Joined: 16/08/13
Posts: 286
Reputation: +30
Gender: Masculino

Olá amigo boua tarde pequei esse seu script fiz tudo certinho na hora que fui olhar o saldo ai deu esse erro
Usei o comando "!saldo"
[22/02/2016 13:10:13] [Error - TalkAction Interface] [22/02/2016 13:10:13] data/talkactions/scripts/buypoints.lua:onSay [22/02/2016 13:10:13] Description: [22/02/2016 13:10:13] data/talkactions/scripts/buypoints.lua:34: attempt to index local 'player' (a number value) [22/02/2016 13:10:13] stack traceback: [22/02/2016 13:10:13] data/talkactions/scripts/buypoints.lua:34: in function <data/talkactions/scripts/buypoints.lua:13>
Usei o comando "!sacar 10"
[22/02/2016 13:14:28] [Error - TalkAction Interface] [22/02/2016 13:14:28] data/talkactions/scripts/buypoints.lua:onSay [22/02/2016 13:14:28] Description: [22/02/2016 13:14:28] data/talkactions/scripts/buypoints.lua:19: attempt to index local 'player' (a number value) [22/02/2016 13:14:28] stack traceback: [22/02/2016 13:14:28] data/talkactions/scripts/buypoints.lua:19: in function <data/talkactions/scripts/buypoints.lua:13>
Usei o comando "!depositar 10"
[22/02/2016 13:17:53] [Error - TalkAction Interface] [22/02/2016 13:17:53] data/talkactions/scripts/buypoints.lua:onSay [22/02/2016 13:17:53] Description: [22/02/2016 13:17:53] data/talkactions/scripts/buypoints.lua:40: attempt to index local 'player' (a number value) [22/02/2016 13:17:53] stack traceback: [22/02/2016 13:17:54] data/talkactions/scripts/buypoints.lua:40: in function <data/talkactions/scripts/buypoints.lua:13>
Obs: a tag em talkactions.xml ficou assim
<!-- Retirar points do site para o jogo --> <talkaction words="!sacar;!saldo;!depositar" event="script" value="buypoints.lua"/>

tá ai a imagem lá no phpmyadmin
Obs: uso site
Edited Fevereiro 22 by Eduzinhonho
info
Group: Conde
Joined: 07/04/15
Posts: 926
Reputation: +335
Gender: Masculino

@@Eduzinhonho, qual distro vc usa?
info
Group: Visconde
Joined: 16/08/13
Posts: 286
Reputation: +30
Gender: Masculino

info
Group: Conde
Joined: 07/04/15
Posts: 926
Reputation: +335
Gender: Masculino

@@Eduzinhonho, putz cara... Não manjo dessa distro... Mas pode ser que o script dessa forma aqui funcione pra vc:
local pointObj = 2160 --id do item "points"
function getAccountPoints(cid)
local res = db.getResult('SELECT `premium_points` FROM `accounts` WHERE id='..getPlayerAccountId(cid)..'')
if(res:getID() == -1) then
return false
end
local ret = res:getDataInt("premium_points")
res:free()
return tonumber(ret)
end
function onSay(cid, words, param)
if (words == '!sacar') then
if param ~= "" then
if tonumber(param) ~= nil then
if 0 >= tonumber(param) then
doPlayerSendCancel(cid, "O valor precisa ser acima de zero.")
elseif 0 < tonumber(param) and tonumber(param) <= getAccountPoints(cid) then
doPlayerAddItem(cid, pointObj, tonumber(param))
db.executeQuery('UPDATE `accounts` SET `premium_points`='..getAccountPoints(cid) - tonumber(param)..' WHERE id='.. getPlayerAccountId(cid)..'')
newPoints = getAccountPoints(cid)
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, 'Você ainda possui '..newPoints..' premium points em sua conta.')
else
doPlayerSendCancel(cid, "Você não tem tantos premium points assim.")
end
else
doPlayerSendCancel(cid, "O valor precisa ser um numero.")
end
else
doPlayerSendCancel(cid, "Você precisa especificar um valor.")
end
elseif (words == '!saldo') then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, 'Seu saldo no shopping atual é de '..getAccountPoints(cid)..' Premium points.')
elseif (words == '!depositar') then
if param ~= "" then
if tonumber(param) ~= nil then
if 0 >= tonumber(param) then
doPlayerSendCancel(cid, "O valor precisa ser acima de zero.")
elseif 0 < tonumber(param) and tonumber(param) <= getPlayerItemCount(cid, pointObj) then
doPlayerRemoveItem(cid, pointObj, tonumber(param))
db.executeQuery('UPDATE `accounts` SET `premium_points`='..getAccountPoints(cid) + tonumber(param)..' WHERE id='.. getPlayerAccountId(cid)..'')
newPoints = getAccountPoints(cid)
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, 'Você acabou de depositar '..param..' premium points no shopping. Seu saldo agora é de '..newPoints..' premium points.')
else
doPlayerSendCancel(cid, "Você não tem tantos premium points assim.")
end
else
doPlayerSendCancel(cid, "O valor precisa ser um numero.")
end
else
doPlayerSendCancel(cid, "Você precisa especificar um valor.")
end
end
return true
end
info
Group: Visconde
Joined: 16/08/13
Posts: 286
Reputation: +30
Gender: Masculino

@@Eduzinhonho, putz cara... Não manjo dessa distro... Mas pode ser que o script dessa forma aqui funcione pra vc:
local pointObj = 2160 --id do item "points" function getAccountPoints(cid) local res = db.getResult('SELECT `premium_points` FROM `accounts` WHERE id='..getPlayerAccountId(cid)..'') if(res:getID() == -1) then return false end local ret = res:getDataInt("premium_points") res:free() return tonumber(ret) end function onSay(cid, words, param) if (words == '!sacar') then if param ~= "" then if tonumber(param) ~= nil then if 0 >= tonumber(param) then doPlayerSendCancel(cid, "O valor precisa ser acima de zero.") elseif 0 < tonumber(param) and tonumber(param) <= getAccountPoints(cid) then doPlayerAddItem(cid, pointObj, tonumber(param)) db.executeQuery('UPDATE `accounts` SET `premium_points`='..getAccountPoints(cid) - tonumber(param)..' WHERE id='.. getPlayerAccountId(cid)..'') newPoints = getAccountPoints(cid) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, 'Você ainda possui '..newPoints..' premium points em sua conta.') else doPlayerSendCancel(cid, "Você não tem tantos premium points assim.") end else doPlayerSendCancel(cid, "O valor precisa ser um numero.") end else doPlayerSendCancel(cid, "Você precisa especificar um valor.") end elseif (words == '!saldo') then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, 'Seu saldo no shopping atual é de '..getAccountPoints(cid)..' Premium points.') elseif (words == '!depositar') then if param ~= "" then if tonumber(param) ~= nil then if 0 >= tonumber(param) then doPlayerSendCancel(cid, "O valor precisa ser acima de zero.") elseif 0 < tonumber(param) and tonumber(param) <= getPlayerItemCount(cid, pointObj) then doPlayerRemoveItem(cid, pointObj, tonumber(param)) db.executeQuery('UPDATE `accounts` SET `premium_points`='..getAccountPoints(cid) + tonumber(param)..' WHERE id='.. getPlayerAccountId(cid)..'') newPoints = getAccountPoints(cid) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, 'Você acabou de depositar '..param..' premium points no shopping. Seu saldo agora é de '..newPoints..' premium points.') else doPlayerSendCancel(cid, "Você não tem tantos premium points assim.") end else doPlayerSendCancel(cid, "O valor precisa ser um numero.") end else doPlayerSendCancel(cid, "Você precisa especificar um valor.") end end return true end
Fucionou sim cara muito obrigado funcionou bastante certo PARABÈNS

se poder min ajudar visita esse outro post que eu fiz lá eu estou com outro problema sobre um script da bike só ler os comentarios que você fica informado e talvez até min ajudará se poder
Muito obrigado por ter ajudado nesse problema
info
Group: Conde
Joined: 07/04/15
Posts: 926
Reputation: +335
Gender: Masculino

@@Eduzinhonho, disponha. ^^
Se eu souber o que fazer, eu respondo lá. sahuahusa
info
Group: Visconde
Joined: 16/08/13
Posts: 286
Reputation: +30
Gender: Masculino

Tranquilo muito obrigado da uma olhada lá no ultimo post que eu atualizei ele está mais fácil de entender e Obrigado.


info
Group: Visconde
Joined: 28/06/11
Posts: 356
Reputation: +26
Tibia Character: Akor Rysea
Mesmo erro que acabei de postar acima Dani. 'RS', se sua tentativas estão dando erro imagina as minhas. 'RSRS'
Vlw Dani, quem estava fazendo errado era eu... Desculpa e muito obrigado mesmo. Te amo <3 HAHA